package bonusabaart1;

//deze class wordt gegeven aan de studenten, zij kunnen dit programma uitvoeren om de competitie te starten

import competitie.CompetitieInterface;
import competitie.SpeelCompetitie;
import competitie.Strategie;

public class Competitie implements CompetitieInterface {

	// dit is het eerste dat studenten moeten/kunnen aanpassen
	//   onthoud hier dat er 2 maal SPELLEN_PER_TEST aantal spellen worden
	//   de eerste maal strategie A tegen B, de tweede maal B tegen A, zodat ieder kansen heeft om te winnen
	public static final int SPELLEN_PER_TEST = 100;
	
	public Competitie() {
	}

	@Override
	public Strategie[] geefSpelers() {
		// deze regel zorgt dat de lijst eerst wordt opgeslagen
		//   de lijst moet eerst worden aangemaakt voordat die teruggegeven wordt, anders gebeurt de cast naar de interface niet automatisch
		// dit is het tweede dat studenten moeten aanpassen: het invullen van alle deelnemende strategie-en
		//   BELANGRIJK:
		//   De gecombineerde naam van package en strategie mag niet hetzelfde zijn voor verschillende deelnemers.
		//   Er mogen wel meerdere instanties aangemaakt worden van eenzelfde strategie. Dit om tegen zichzelf te kunnen spelen.
		Strategie[] spelers = {
				// voorbeelden
				new bonusabaart1.StrategieSpeler1(),
				new bonusabaart1.StrategieSpeler2(),
				};
		return spelers;
	}

	public void start() {
		// deze regel start de competitie en geeft het huidige object mee (zodat we binnen de LibUI de spelerlijst kunnen opvragen)
		// niet aanpassen
		new SpeelCompetitie(this, SPELLEN_PER_TEST);
	}

	public static void main(String[] argv) {
		new Competitie().start();
	}
}
